/**
 * 按人员查询排班记录的请求参数
 */
export interface ISearchByPersonRequest {
  /** 页码 */
  Page?: number;
  /** 每页条数 */
  Limit?: number;
  /** 是否为纯文本 */
  IsPlainText?: boolean;
  /** 是否返回字符串 */
  IsEmunToString?: boolean;
  /** 排序信息 */
  SortInfo?: {
    /** 排序属性 */
    Property?: string;
    /** 排序方向：Asc | Desc */
    Direction?: 'Asc' | 'Desc';
  };
  /** 人员ID */
  PersonId?: string;
  /** 员工工号 */
  StaffNo?: string;
  /** 部门ID */
  GroupId?: string;
  /** 排班日期 */
  ShiftDate?: string[];
}

/**
 * 班次详情
 */
export interface IShiftDetail {
  /** 班次名称 */
  ShiftName: string;
  /** 显示颜色 */
  DisplayColor: string;
  /** 标准工作分钟数 */
  StandardWorkMinutes: number;
  /** 开始时间 */
  StartTime: string;
  /** 工作结束时间 */
  WorkEndTime: string;
  /** 结束时间 */
  EndTime: string;
}

/**
 * 排班记录
 */
export interface IAttendanceRecord {
  /** ID */
  ID: string;
  /** 人员姓名 */
  PersonName: string;
  /** 员工编号 */
  StaffNo?: string;
  /** 考勤班组名称（班次） */
  AttendanceShiftGroupName: string;
  /** 排班日期 */
  ShiftDate: string;
  /** 班次信息 */
  ShiftInfo: string;
  /** 班次详情 */
  ShiftDetails: IShiftDetail[];
  /** 工作开始时间 */
  WorkStartTime?: string;
  /** 工作结束时间 */
  WorkEndTime?: string;
  /** 上班打卡时间 */
  StartTime?: string;
  /** 下班打卡时间 */
  EndTime?: string;
  /** 班次状态 */
  ShiftType?: string;
  /** 考勤结果（状态） */
  AttendanceResult: string;
  /** 状态 */
  Status?: string;
  /** 迟到分钟数 */
  LateMinutes: number;
  /** 早退分钟数 */
  EarlyLeaveMinutes: number;
  /** 旷工分钟数 */
  AbsentMinutes: number;
  /** 缺勤分钟数 */
  MissingPunchCount: number;
  /** 出勤时长（分钟） */
  WorkMinutes: number;
  /** 部门名称 */
  GroupName?: string;
}

/**
 * 按人员查询排班记录的响应数据
 */
export interface ISearchByPersonResponse {
  /** 状态码 */
  Code: number;
  /** 消息 */
  Msg?: string;
  /** 总数 */
  Count?: number;
  Page: number;
  PageCount: number;
  /** 数据列表 */
  Data: Array<{
    /** 人员ID */
    ID: string;
    /** 人员姓名 */
    PersonName: string;
    /** 部门名称 */
    GroupName: string;
    /** 排班记录列表 */
    Records: IAttendanceRecord[];
  }>;
}

